iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Software Development

從零開始構建能理解語義的 Linebot 架構系列 第 7

使用 AWS Lambda 開發 Serverless Event 接收器: 串接LINE Bot Webhook

  • 分享至 

  • xImage
  •  

概述

  • 以AWS Lambda的Function URL來當作Webhook的目的端,接收LINE Bot的Webhook,並觸發Lambda Function。

Serverless 服務與 Webhook

目前很多服務都有提供Webhook的功能,當事件一發生,系統就能把訊息傳送到我們指定的目的地。

例如:你可以指定Git在commit時,通知CICD工具做自動測試或部署,以及Line Bot在收到聊天訊息時,把訊息內容送到我們指定的API Endpoint (也就是API的網址),進行後續的處理。

而當測試這些Webhook功能,或者拿來開發最小功能產品(MVP)時,Serverless的雲端服務是一個方便又快速的方式,例如AWS Lambda。

AWS Lambda

AWS Lambda 是由 Amazon Web Services所提供的事件驅動型服務,你可以用多種程式語言撰寫函式(Function)。而當Function被部署到AWS Lambda後,則由某個事件觸發。
我們無法指定Function的執行環境或程式碼的儲存位置,這些都由AWS背後的資源調用機制負責。
Lambda Function是無法主動被執行的,得靠事件來驅動。事件的種類很多,除了Webhook,像是S3資料夾裡的文件被更新,或是SNS事件,也能觸發Lambda Function。

第一次打開 Lambda 的架構圖時,會看到"Add Trigger"的選項,這選項容易讓人誤以為API Gateway和Lambda這兩個服務是綁在一起的:

https://ithelp.ithome.com.tw/upload/images/20240921/20105227JyVOMHR7U3.png
圖: Lambda Function主頁

Function URL

其實Lambda自身就有提供Function URL的功能, 不必加上API Gateway這個trigger,也能供外部以API Calling的方式,來把需要的資訊讓Lambda Function接收到。

API Gateway 的限制

相較於Function URL API Gateway在被外界存取時,一定要透過IAM(AWS的身份驗證),較不利於專案初期的測試,例如只是想簡單的測試Linbot發出的Webhooke Event。

要讓Lambda function用非IAM驗證 / 無驗證的方式開放給外界使用時,可以設定Function URL來快速的測試Webhook。

設定 Lambda Function

點擊Configuration 分頁, 在左側欄的Function URL設定

https://ithelp.ithome.com.tw/upload/images/20240921/20105227TwnkHc9X0w.png
圖: 設定Function URL

測試

在LINE Developers Console的Messaging API頁面點擊Verify去驗證API

1.使用API Gateway Endpoint測試接收LINE Bot Webhook

https://ithelp.ithome.com.tw/upload/images/20240921/20105227VLth8UPMVf.png

因為我們沒有做好IAM相關身份驗證的設定,會出現403 Forbidden

https://ithelp.ithome.com.tw/upload/images/20240921/201052277fNpGpNVAN.png

2.使用Lambda Function測試接收LINE Bot Webhook

https://ithelp.ithome.com.tw/upload/images/20240921/201052279HgsWZl4e1.png
如上圖,使用Lambda Function產生的URL就可以成功被Verify了。

以上就是用Lambda Function接收LINE Bot Webhook的方式,接下來會開始部署及開發的部分


上一篇
LINE Bot 基本觀念: 官方帳號的建立流程 / 事件簡介
下一篇
使用 AWS Lambda 開發 Serverless Event 接收器: 部署方式
系列文
從零開始構建能理解語義的 Linebot 架構12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言